/** Clase javaScript para la pantalla de adm de Mesa de Examenes */
$(document).ready(function () {
	$('#responseMessages').hide();
	loadGrid();
	//Cuando carga todo mando a cerrar el gif
	finalizaLoad();
});

/**
 * Seteo de las propiedades de los dialogs que se usan en la pantalla
 */
function loadDialogs(){
	
	//Seteo de propiedades de la ventana de confirmacion para cerrar una mesa	
	$('#dialog-confirm-cerrar-mesa').dialog({		
		resizable: false,
		autoOpen: false,
	    height:'auto',
	    modal: true,
	    close: $(this).close,
	    buttons: {
	    	"Cerrar Mesa": function() {
	    		try{	    			
	    			
//	    			Pasaje de datos a traves del llamado al open del dialog
//	    			var dataAttr = $(this).data();
//	    			alert("IDM = " + dataAttr.idm);
	    			
	    			var record = $('#MesaExamenTableContainer').jtable('selectedRows').data('record');
	    			
	    			var idm = record.idm;
	    			var folio = record.folio;
	    			var libro = record.libro;
	    			
	    			if(record == null){
	    				alert('Debe seleccionar una mesa para Cerrar');
	    			}else if(folio == 0 || libro == 0){
	    				alert('No se puede cerrar una mesa sin que se haya asignado un Libro y un Folio');
	    			}else{	
//	    				alert('Cerrar---> ' + idm);
	    				cerrarMesaAction(idm);	
	    			}
	        		$( this ).dialog( "close" );	    			
	    		}catch(e){
	    			alert(e.message);
	    		}    		
	        },
	        Cancel: function() {
	        	$( this ).dialog( "close" );
	        	
	        }
	     }
	});	
	
	
	/**
	 * Seteo de propiedades de la ventana de confirmacion para abrir una mesa
	 */	
	$('#dialog-confirm-abrir-mesa').dialog({		
		resizable: false,
		autoOpen: false,
	    height:'auto',
	    modal: true,
	    close: $(this).close,
	    buttons: {
	    	"Abrir Mesa": function() {
	    		try{	    			
//	    			Pasaje de datos a traves del llamado al open del dialog
//	    			var dataAttr = $(this).data();
//	    			alert("Record = " + dataAttr.idm);
	    			
	    			var record = $('#MesaExamenTableContainer').jtable('selectedRows').data('record');
	    			
	    			var idm = record.idm;
	    			var estado = record.estado;
	    			
	    			if(record == null){
	    				alert('Debe seleccionar una mesa para abrir');
	    			}else if(estado != ('P')){
	    				alert('No se puede Abrir una mesa que no haya sido programada');
	    			}else{
//	    				alert('Abrir---> ' + idm);	
	    				abrirMesaAction(idm);
	    			}
	        		$( this ).dialog( "close" );	    			
	    		}catch(e){
	    			alert(e.message);
	    		}    		
	        },
	        Cancel: function() {
	        	$( this ).dialog( "close" );
	        }
	     }
	});	
}

/**
 * Inicializacion de la tabla. 
 */
function loadGrid(){
	
	$('#MesaExamenTableContainer').jtable({
        title: 'Mesas de Examen',
        paging: true, //Enable paging
        pageSize: 10, //Set page size (default: 10)
        sorting: true, //habilita ordens
        defaultSorting: 'idm ASC', //Orden default
        selecting: true, //habilita seleccion
//        multiselect: true, // Permite multiple seleccion
//        selectingCheckboxes: true, //Show checkboxes on first column
        actions: {
        	listAction:'../CRUDMesaExamen?action=listMesasExamen'	
        	, createAction :  '../CRUDMesaExamen?action=crearMesaExamen'            
//            , updateAction: '../CRUDMesaExamen?action=updateMesaExamen'
        }	
		, fields: {
            idm: { title: 'IDM', key: true,create: false, edit: false ,type : 'hidden'}, 
            Exams: {
                title: '...',
                width: '1%',
                sorting: true,
                edit: false,
                create: false,
                display: function (infoMesa) {
                	//Solo muestro el icono si esta abierta la mesa
                	if(infoMesa.record.estado == 'A' && infoMesa.record.cantExam > 0){
	                    //Create an image that will be used to open child table
	                    var $img = $('<img src="../images/list_metro.png" title="Alumnos Inscriptos" />');
	                    //Open child table when user clicks the image
	                    $img.click(function () {
	                        $('#MesaExamenTableContainer').jtable('openChildTable',$img.closest('tr'),{ 
	                        	title: 'Alumnos Inscriptos a la Materia: ' + infoMesa.record.materia,
	                        	actions: {
	                        		listAction: '../CRUDMesaExamen?action=listAlumnosPorMesa&idm=' + infoMesa.record.idm
//					                , updateAction : 'CRUDMesaExamen?action=updateNotaAlumno'
	                           	},
	                			fields: {
	                				idm: 		{ title: 'Idm', type: 'hidden', defaultValue: infoMesa.record.idm, edit: false, key : true},
	                                legajoA: 	{ title: 'Legajo', key: true, edit: false},
	                                apenom:		{ title: 'Alumno', width: '30%', edit: false},
	                                carrera:	{ title: 'Carrera', width: '30%', edit: false},		
	                                codigoMe: 	{ title: 'Codigo Materia', edit : false, key : true, type: 'hidden'},
	                                materia:	{ title: 'Materia', width: '20%', edit : false, list: false},
	                                fecha_ins: 	{ title: 'Fecha Insc.', edit: false, type: 'date', displayFormat: 'dd-mm-yy'},
	                                nota: 		{ title: 'Nota', width: '10%', options: ["0","1", "2", "3", "4", "5", "6", "7", "8","9","10"], edit : false}
	                			}, 
	                	        /*
	                	         * Esta funcion permite que una vez que se selecciona una fila no se pueda volver a
	                	         * deseleccionar un regstro de la tabla
	                	         */
	                	        recordsLoaded: function(event, data) {
	                	    	   $('.jtable-data-row').click(function() {
	                	    		   $('.jtable-data-row').removeClass('jtable-row-selected');
	                	    		   $(this).addClass('jtable-row-selected');
	                	          });
	                	        }
	                        }, 
	                        function (data) {data.childTable.jtable('load');});
	                    });
	                    //Return image to show on the person row
	                    return $img;
	                }else if(infoMesa.record.cantExam == 0){
	                	var $img = $('<img src="../images/warning_png.png" title="Sin Alumnos Inscriptos" />');
	                	$img.click(function () {});
	                	return  $img;
	                }
                }
            },           
            
            fecha: 			{ title: 'Fecha',width: '8%',create: true,edit: false ,type: 'date',displayFormat: 'dd-mm-yy',inputClass: 'validate[required]'},
            libro: 			{ title: 'Libro',create: false,edit : true,width: '5%',inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            folio: 			{ title: 'Folio',create: false,edit: true,width: '5%' ,inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            codigoM: 		{ title: 'Materia',create: true, edit: false,list: false, options:'../CRUDGeneral?action=listMateriasLabel',inputClass: 'validate[required]'},
            materia:		{ title: 'Materia',width: '12%',edit: false, create: false},
            titular: 		{ title: 'Titular',edit: false,list: false,create: true, options:'../CRUDGeneral?action=listDocentesLabel', inputClass: 'validate[funcCall[validateTitular]]'},
            apeNomTitular: 	{ title: 'Titular',width: 'auto',edit : false, create: false},
            vocal1: 		{ title: 'Vocal 1',id:'vocal1' ,edit: false ,list: false ,create: true, options:'../CRUDGeneral?action=listDocentesLabel',inputClass: 'validate[funcCall[validateVocal1]]'},
            apeNomV1:		{ title: 'Vocal 1',width: 'auto%',edit : false , create: false},
            vocal2: 		{ title: 'Vocal 2',edit: false ,list: false,create: true, options:'../CRUDGeneral?action=listDocentesLabel',inputClass: 'validate[funcCall[validateVocal2]]'},
            apeNomV2:		{ title: 'Vocal 2',width: 'auto',edit: false , create: false },
            cantExam: 		{ title: 'Total',width: '7%', create: false,edit: false, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            cantAus: 		{ title: 'Ausentes',width: '7%', create: false,edit: true, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            cantAprob: 		{ title: 'Aprobados',width: '7%', create: false,edit: true, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            carrera:		{ title: 'Carrera', edit: false, create: false, list: false},
           
            //Columna con accion personalizado para cerrar mesa
            opciones: {
                title: '',
                width: '5px',
                sorting: false,
                create: false,
                edit: false,
                list: true,
                display: function (data) {
//                	$(this).addClass('jtable-row-selected');
                	if(data.record.estado == 'A'){
	                    if (data.record) {
//	                    	'<span title="Cerrar Mesa de Examen" class="jtable-command-button jtable-close-button" onclick="dialogCerrarMesa(); return false;"><img src="js/jquery/themes/metro/close.png"></span>';
	                    	return '<span title="Cerrar Mesa de Examen" onclick="dialogCerrarMesa('+ data.record.idm +'); return false;"><img src="../images/table_delete.png"></span>';
	                    }
                	}else if(data.record.estado == 'P'){
                		return '<span title="Abrir Mesa de Examen" onclick="dialogAbrirMesa('+ data.record.idm +'); return false;"><img src="../images/table_add.png"></span>';
                	}
                }
            },           
         },
         toolbar: {        	
        	    items: [{
	        	    	//Agrego un .ico por  problemas con mostrar la miniatura
	        	        icon: '../images/doc_pdf.ico',
	        	        text: 'Acta Volante (Pdf)',        	        
	        	        click: function () {
	        	        	var fila = $('#MesaExamenTableContainer').jtable('selectedRows').data('record');
	        	        	if(fila == null){
	        	        		alert('Debe Seleccionar una mesa a Exportar');	        	        		
	        	        	}else{
	        	        		exportActaVolante(fila);
	        	        	}
	        	        }        	        
        	    	}
//        	        ,{        	    
//        	    	//Agrego un .ico por  problemas con mostrar la miniatura
//        	        icon: 'images/doc_pdf.ico',
//        	        text: 'Acta Definitiva (Pdf)',        	        
//        	        click: function () {
//        	        	var fila = $('#MesaExamenTableContainer').jtable('selectedRows').data('record');
//        	        	if(fila == null){
//        	        		alert('Debe Seleccionar una mesa a Exportar');	        	        		
//        	        	}else{
//        	        		if(fila.estado == 'C'){
////        	        			exportActaDefinitiva(fila);      	        		
//        	        		}else{
//        	        			alert('La mesa debe estar cerrada para Exportar');
//        	        		}        	        		
//        	        	}
//        	        }        	        
//        	    }
        	    	]
        	},
        	//Una vez que se inserto satisfactoriamente el registro
        	recordAdded: function(event, data){        		
        		successAction('');
                //after record insertion, reload the records
                $('#MesaExamenTableContainer').jtable('load');
            },
            //Una vez que se actualizo satisfactoriamente el registro
            recordUpdated: function(event, data){            	
            	successAction('');            		
                //after record updation, reload the records
                $('#MesaExamenTableContainer').jtable('load');
            },
    	
    	 //Initialize validation logic when a form is created
        formCreated: function (event, data) {
//        	alert(JSON.stringify(data.form));	
            data.form.validationEngine();
        },
        //Validate form when it is being submitted
        formSubmitting: function (event, data) {        	
        	return data.form.validationEngine('validate');        	
        },
        //Dispose validation logic when form is closed
        formClosed: function (event, data) {
            data.form.validationEngine('hide');
            data.form.validationEngine('detach');
        }, 
        /*
         * Esta funcion permite que una vez que se selecciona una fila no se pueda volver a
         * deseleccionar un regstro de la tabla
         */
        recordsLoaded: function(event, data) {
    	   $('.jtable-data-row').click(function() {
    		   $('.jtable-data-row').removeClass('jtable-row-selected');
    		   $(this).addClass('jtable-row-selected');
          });
        }
    });
    /**
     * Carga la lista en la grilla
     * luego ejecuta la inicializacion de los dialogos en modo CallBack 
     */
    $('#MesaExamenTableContainer').jtable('load',loadDialogs());
    
}

//Abre el popUp en modo MODAL
function dialogCerrarMesa(idm){	
	$('#dialog-confirm-cerrar-mesa').data('idm',idm).dialog('option','modal',true).dialog('open');
}

//Abre el popUp en modo MODAL
function dialogAbrirMesa(idm){
	$('#dialog-confirm-abrir-mesa').data('idm',idm).dialog('option','modal',true).dialog('open');
}

//Accion que realiza el cierre de la mesa
function cerrarMesaAction(idm) {	
	
	var param = '&idm=' + idm;	
	callJsonAction("../CRUDMesaExamen?action=cerrarMesaExamen" + param, 'successAction', 'errorAction');
}

//Accion que realiza el abrir de la mesa programada
function abrirMesaAction(idm) {	
	
	var param = '&idm=' + idm;	
	callJsonAction("../CRUDMesaExamen?action=abrirMesaExamen" + param, 'successAction', 'errorAction');
}

/**
 * En caso de que en la accion haya ocurrido algun error
 */
function errorAction(){	
	
	/*
	 * Clase que se quita la fila seleccionada para que al querer cerrarla nuevamente
	 * no quite la seleccion de la fila y no de error de que no se ha seleccionado la fila
	 */
	$('.jtable-row-selected').removeClass('jtable-row-selected');
	setErrorMsg($('#responseMessages'), 'No se pudo realizar la accion deseada!');
	$('#responseMessages').show();	
	setTimeout(function(){           		
		$('#responseMessages').hide();
	}, 10000);	
}


/**
 * Si Salio bien de la accion
 */
function successAction(msg){
	
	//Deselecciono los registros de la tabla
	$('.jtable-row-selected').removeClass('jtable-row-selected');
	
	setSuccessMsg($('#responseMessages'), 'Grabado Exitosamente!');
	$('#responseMessages').show();	
	setTimeout(function(){           		
		$('#responseMessages').hide();
	}, 10000);	
//	$('#responseMessages').hide();
	loadGrid();
}

/**
 * Funciones que valida que no se repitan los docentes en los cargos
 * 
 * los campos dicen $('#Edit-') por que es el nombre que le asigna el jtable cuando
 * arma la pantalla para editar o crear
 */
function validateTitular(field, rules, i, options){	
	
	var voc1 = $('#Edit-vocal1').val();
	var voc2 = $('#Edit-vocal2').val();
	var tit  = $('#Edit-titular').val();
	
//	if(field.val()  == $('#Edit-vocal1').val() || field.val()  == $('#Edit-vocal2').val()){
	if(tit == voc1 || tit == voc2){		
		return 'No se puede asignar un Docente a varios cargos';
	}
}

function validateVocal1(field, rules, i, options){	
	
	var voc1 = $('#Edit-vocal1').val();
	var voc2 = $('#Edit-vocal2').val();
	var tit  = $('#Edit-titular').val();
	
//	if(field.val() == $('#Edit-vocal2').val() || $('#Edit-titular').val()  == field.val()){
	if(voc1 == voc2 || tit == voc1){
		return 'No se puede asignar un Docente a varios cargos';
	}
}

function validateVocal2(field, rules, i, options){	
	
	var voc1 = $('#Edit-vocal1').val();
	var voc2 = $('#Edit-vocal2').val();
	var tit  = $('#Edit-titular').val();
	
//	if($('#Edit-vocal1').val() ==field.val() || $('#Edit-titular').val()  == field.val()){		
	if(voc1 == voc2 || tit  == voc2){
		return 'No se puede asignar un Docente a varios cargos';
	}
}

/** ========================================================================= */

/** Funcion	que procesa los datos para mandar a imprimir el PDF */
function exportActaVolante(record){
	
	var param = "";
	param = param + "&idm="+ record.idm;
	param = param + "&carrera=" + record.carrera;
	param = param + "&materia=" + record.materia;
	param = param + "&prof=" + record.apeNomTitular;
	
	callJsonAction("../CRUDMesaExamen?action=exportarActaVolante" + param, '', 'errorAction');	
}

/** Funcion	que procesa los datos para mandar a imprimir el PDF */
function exportActaDefinitiva(record){
	
	var param = "";
	param = param + "&idm="+ record.idm;
	param = param + "&carrera=" + record.carrera;
	param = param + "&materia=" + record.materia;
	param = param + "&prof=" + record.apeNomTitular; 
	
	callJsonAction("../CRUDMesaExamen?action=exportarActaDefinitva" + param, '', 'errorAction');	
}
